﻿using EntGuayasSLA.BL;
using EntGuayasSLA.BL.Listas;
using EntGuayasSLA.BL.Listas.Criterias;
using Ext.Net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace EGuayas.Web.Licenciamiento.admin.tabs
{
    public partial class wucTareas : ucWuc
    {
        /// <summary>
        /// Obtener fase id seteada en evento <OnComponentAdded> del user control
        /// </summary>
        protected String FaseLicId
        {
            get
            {
                return ReadCustomConfigFaseLic(this.pnlTareas, this.ID);
            }

        }
        protected String FaseId
        {
            get
            {
                return ReadCustomConfigFase(this.pnlTareas, this.ID);
            }

        }
        protected String PageId
        {
            get
            {
                return ReadCustomConfigPage(this.pnlTareas, this.ID);
            }

        }
        protected String EstadoFase
        {
            get
            {

                return ReadCustomConfigEstadoFase(this.pnlTareas, this.ID);
            }

        }
        protected String IdPageSession
        {
            get
            {

                return ReadCustomConfigPage(this.pnlTareas, this.ID);
            }

        }
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                    if (!X.IsAjaxRequest)
                    {
                        InitWuc();
                    }
            }
            catch (Exception ex)
            {
                RegistrarLog("wucTareas.Page_Load" + ex);
            }
        }
        /// <summary>
        /// Buscar los directores y subdirectores asignados, y cambia propiedad S a asignados en fase anterior
        /// </summary>
        /// <returns></returns>
        private TecnicoLista findListaTecnicos()
        {
            try{
                    TecnicoLista listaTecnicosNow = TecnicoLista.GetTecnicoLista(Constantes.Licenciamiento);
                    TareaLista listaTareas = null;
                    //Obtener la fase anterior a la actual
                    FaseLicenciamientoLista itemsFases = FaseLicenciamientoLista.GetFaseLicenciamientoLista(Guid.Parse(GetSessionPage.ExpedienteId(IdPageSession)));
                    //Actualizar estado actual
                    FaseLicenciamientoInfo faseFinalizada = itemsFases.FirstOrDefault(r => r.EstadoFase == Valores.Codigo_Estado_Fase_Finalizado);
                    if (faseFinalizada != null)
                    {
                        //Llenar datos de directores y subdirectores
                        ModuloCriteria tareaCriteria = ModuloCriteria.NewModuloCriteria();
                        tareaCriteria.Id = faseFinalizada.Id.ToString();
                        tareaCriteria.Modulo = Valores.Modulo_Tarea_Licenciamiento;
                        //Obtener lista de tecnicos de la fase anterior
                        listaTareas = TareaLista.GetTareaLista(tareaCriteria);
               
                        foreach (TareaInfo personAsig in listaTareas)
                        {
                            TecnicoInfo perFind = listaTecnicosNow.FirstOrDefault(r => r.Id== personAsig.TecnicoId);
                            if (perFind != null)
                            {
                                perFind.Asignado = "S";
                            }
                        }


                    }
                    return listaTecnicosNow;
              }
              catch (Exception ex)
              {
                  RegistrarLog("wucTareas.findListaTecnicos" + ex);
              }
            return null;
        }
        public void InitWuc()
        {
            try
            {
                    if (FaseLicId != "")
                    {
                        //if (GetSessionUsuario.UsuarioRolCodigo != Valores.Codigo_Rol_Promotor)
                        //{
                        EnabledBtnNuevoTarea();
                        this.stoCbxTecnicos.DataSource = findListaTecnicos();
                        this.stoCbxTecnicos.DataBind();
                        BindDataTarea();
                        //DESHABILITAR MODO LECTURA
                        if ((GetSessionPage.GetSession(EstadoFase) == Valores.Codigo_Estado_Fase_Finalizado) || GetSessionUsuario.UsuarioRolCodigo == Valores.Codigo_Rol_TecnicoAuditoria || GetSessionUsuario.UsuarioRolCodigo == Valores.Codigo_Rol_TecnicoLicencimiento)
                        {
                            int index = this.gpTarea.ColumnModel.Columns.Count;
                            //No vizualizar las ultimas 3 columnas
                            for (int i = 3; i > 0; i = i - 1)
                            {
                                index -= 1;
                                this.gpTarea.RemoveColumn(index);
                            }
                            //this.gpTarea.Reconfigure();
                            //this.gpTarea.Refresh();
                            this.btnForm.Disable();
                        }
                        //}
                    }
          }
          catch (Exception ex)
          {
              RegistrarLog("wucTareas.InitWuc" + ex);
          }
        }

        public void EnabledBtnNuevoTarea()
        {
          try
          {
              if (FaseLicId != "")
              {
                  var faseIdLic = GetSessionPage.GetSession(FaseLicId);
                  if (faseIdLic != "")
                  {
                      this.btnForm.Enable();
                  }
                  else
                  {
                      this.btnForm.Disable();
                  }

                  if (GetSessionUsuario.UsuarioRolCodigo == Valores.Codigo_Rol_JefeDepartamentalAuditoria || GetSessionUsuario.UsuarioRolCodigo == Valores.Codigo_Rol_JefeDepartamentalLicencimiento)
                  {
                      this.btnForm.Show();
                      if (GetSessionPage.GetSession(EstadoFase) == Valores.Codigo_Estado_Fase_Finalizado)
                      {
                          this.btnForm.Disable();
                      }
                      else
                      {
                          this.btnForm.Enable();
                      }
                  }
                  else
                  {
                      this.btnForm.Hide();
                  }
              }
          }
          catch (Exception ex)
          {
              RegistrarLog("wucTareas.EnabledBtnNuevoTarea" + ex);
          }
        }
        #region Tarea
        [DirectMethod]
        private void BindDataTarea()
        {
            try
            {
                if (FaseLicId != "")
                {
                    var faseIdLic = GetSessionPage.GetSession(FaseLicId);
                    if (faseIdLic != "")
                    {
                        var tareaCriteria = ModuloCriteria.NewModuloCriteria();
                        tareaCriteria.Id = faseIdLic;
                        tareaCriteria.Modulo = Valores.Modulo_Tarea_Licenciamiento;
                        this.stoTarea.DataSource = TareaLista.GetTareaLista(tareaCriteria);
                        this.stoTarea.DataBind();
                    }
                }
              }
            catch (Exception ex)
            {
                RegistrarLog("wucTareas.BindDataTarea " + ex);
            }
        }
        /// <summary>
        /// Elimnar item de tarea
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnEliminar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                var id = Guid.Parse(e.ExtraParams["hddTecDelId"]);
                Tarea objTar = Tarea.GetEditableRoot(id, Valores.Modulo_Tarea_Licenciamiento);
                objTar.Delete();
                objTar.Save();
                BindDataTarea();
                //gpTarea.Refresh();

            }
            catch (Exception ex)
            {
                RegistrarLog("wucTareas.btnEliminar_Click " + ex);
            }


        }
        /// <summary>
        /// Crear/Modificar tareas
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnGuardar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                Tarea objTar = Tarea.NewEditableRoot(Valores.Modulo_Tarea_Licenciamiento);
                string msgOperacion = "";
                if (e.ExtraParams["hddId"] == "")
                {
                    msgOperacion = "creada";
                    objTar.Id = System.Guid.NewGuid();
                }
                else
                {
                    msgOperacion = "modificada";
                    objTar = Tarea.GetEditableRoot(Guid.Parse(e.ExtraParams["hddId"]), Valores.Modulo_Tarea_Licenciamiento);
                }
                String _sesper = GetSessionUsuario.PersonaId;
                Guid _id = Guid.Parse(_sesper);
                JefeDepartamental jefeDepar = JefeDepartamental.GetEditableRoot(_id);
                if (jefeDepar.PersonaId == "")
                {
                    X.Msg.Show(new MessageBoxConfig
                    {
                        Buttons = MessageBox.Button.OK,
                        Icon = MessageBox.Icon.INFO,
                        Title = "Estado",
                        Message = string.Format("{0}", "Usuario que asigna tarea no tiene rol Jefe Departamental")
                    });
                }
                else
                {
                    objTar.Tipo = Valores.Modulo_Tarea_Licenciamiento;
                    objTar.JefeId = jefeDepar.Id.ToString();
                    //en la propiedad de TablaId se almacena el valor id de la tabla a la que se este relacionando en ese momento.
                    objTar.IdFase = GetSessionPage.GetSession(FaseLicId);//
                    objTar.Asunto = e.ExtraParams["txtAsunto"];
                    objTar.Descripcion = e.ExtraParams["txtDesc"];
                    objTar.TecnicoId = e.ExtraParams["ddfTecnico"];
                    objTar.FechaInicio = Convert.ToDateTime(e.ExtraParams["dfFechaInicio"]);
                    objTar.FechaFin = Convert.ToDateTime(e.ExtraParams["dfFechaLimite"]);
                    objTar.Responsable = e.ExtraParams["rdg_resp"];
                    objTar.ExpedienteId = GetSessionPage.ExpedienteId(PageId);
                    objTar.Save();

                    BindDataTarea();
                    X.Msg.Show(new MessageBoxConfig
                    {
                        Buttons = MessageBox.Button.OK,
                        Icon = MessageBox.Icon.INFO,
                        Title = "Estado",
                        Message = string.Format("{0} <b>{1}</b> {2}", "Tarea", objTar.Asunto, msgOperacion)
                    });
                }

            }
            catch (Exception ex)
            {
                RegistrarLog("wucTareas.btnGuardar_Click " + ex);
            }
        }
        #endregion
    }
}